/**
 * 
 */
package uni.edu.pe.analisisSentimental.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSourceUtils;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.stereotype.Repository;

import uni.edu.pe.analisisSentimental.dao.UrlProcesadaDAO;
import uni.edu.pe.analisisSentimental.domain.UrlProcesada;

/**
 * @author nestor
 *
 */
@Repository
public class UrlProcesadaDAOImpl implements UrlProcesadaDAO {

    private static Logger logger = LoggerFactory.getLogger(UrlProcesadaDAOImpl.class);

    private static final boolean isDebugEnabled = logger.isDebugEnabled();

	// SimpleJdbcTemplate-style...
	private SimpleJdbcTemplate simpleJdbcTemplate;

	@Autowired
	public void setDataSource(DataSource dataSource) {
	    this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
	}
	
	/*
	 * (non-Javadoc)
	 * @see uni.edu.pe.analisisSentimental.dao.UrlProcesadaDAO#pasarAProcesoUrl(java.util.List)
	 */
	public int[] grabarUrlProcesadaBatch(List<UrlProcesada> lstUrlProcesada) {
		logger.debug("<==== Inicio Method grabarUrlProcesadaBatch ====>");
		int[] updateCounts = null;
		if(CollectionUtils.isNotEmpty(lstUrlProcesada)){
			int size = lstUrlProcesada.size();
			Map[] mapUrl = new Map[size];
			for(int i=0;i<size;i++){
				UrlProcesada urlProcesada = lstUrlProcesada.get(i);
				Map<String, Object> parameters = new HashMap<String, Object>();
				parameters.put("id", urlProcesada.getId());
				parameters.put("textoInicialUrl", urlProcesada.getTextoInicialUrl());
				parameters.put("textoActualUrl", urlProcesada.getTextoActualUrl());
				parameters.put("flagHabilitado", urlProcesada.getFlagHabilitado());
				mapUrl[i]=parameters;
			}
			SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(mapUrl);
			String sql =  "INSERT INTO URL_PROCESADAS(Id, TextoInicialUrl, TextoActualUrl, FlagHabilitado) "+
						  "values(:id, :textoInicialUrl, :textoActualUrl, :flagHabilitado)";					
			updateCounts = simpleJdbcTemplate.batchUpdate(sql,batch);	
			lstUrlProcesada =null;
			batch=null;
		}

		return updateCounts;
	}
	
	public void grabarUrlProcesada(UrlProcesada urlProcesada) {
		logger.debug("<==== Inicio grabarUrlProcesada ====>");	
		if(isDebugEnabled)
			logger.debug("urlProcesada: "+ToStringBuilder.reflectionToString(urlProcesada));
		String sql =  "INSERT INTO URL_PROCESADAS(Id, TextoInicialUrl, TextoActualUrl, FlagHabilitado) "+
		  "values(:id, :textoInicialUrl, :textoActualUrl, :flagHabilitado)";	
		Map<String, Object> parameters = new HashMap<String, Object>();
		parameters.put("id", urlProcesada.getId());
		parameters.put("textoInicialUrl", urlProcesada.getTextoInicialUrl());
		parameters.put("textoActualUrl", urlProcesada.getTextoActualUrl());
		parameters.put("flagHabilitado", urlProcesada.getFlagHabilitado());
		simpleJdbcTemplate.update(sql,parameters);	
	}
	



}
